package gphoto.vo;

import gphoto.bo.Concerne;
import gphoto.bo.Lieu;
import gphoto.bo.Photo;
import gphoto.bo.repertoire.EmplacementATrier;
import gphoto.bo.repertoire.EmplacementTrier;
import gphoto.bo.repertoire.Repertoire;

import java.awt.Dimension;
import java.io.File;
import java.util.List;

public class ATrierVO {

	private List<PhotoATrierVO> photoVOs;
	
	private List<PhotoATrierVO> photoVOsAAJouter;
	
	private List<Photo> photosAAjouter;
	
	private EmplacementATrier emplacementAtrierCourant;
	
	private List<EmplacementATrier> emplacementsATrier;
	
	private EmplacementTrier emplacementTrierCourant;
	
	private List<EmplacementTrier> emplacementsTrier;

	/**
	 * @deprecated
	 */
	private Repertoire repCourantAtrier;
	
	private String repertoireATrierCourantString = File.separator;
	
	private List<Repertoire> repertoiresATrier;

	/**
	 * @deprecated
	 */
	private Repertoire repCourantTrier;
	
	private String repertoireTrierCourantString = File.separator;
	
	private List<Repertoire> repertoiresTrier;
	
	private List<Lieu> lieux;
	
	private List<Concerne> concernes;
	
	private int numeroPage = 1;
	
	private int nbPhotosParPage;
	
	private int nbColonnes;
	
	/**
	 * @deprecated
	 * @see tailleVignetteATrier
	 */
	private Dimension dimensionVignetteATrier;
	
	private int tailleVignetteATrier;
	
	private int taillePhotoConseillee;
	
	private int tailleEnKoPhotoConseillee;
	
	
	public void setPhotoVOs(List<PhotoATrierVO> photoVOs) {
		this.photoVOs = photoVOs;
	}
	
	public List<PhotoATrierVO> getPhotoVOs() {
		return photoVOs;
	}
	
	public void setEmplacementsATrier(List<EmplacementATrier> repertoiresATrier) {
		this.emplacementsATrier = repertoiresATrier;
	}
	
	public List<EmplacementATrier> getEmplacementsATrier() {
		return emplacementsATrier;
	}
	
	public void setEmplacementATrierCourant(EmplacementATrier repAtrierCourant) {
		this.emplacementAtrierCourant = repAtrierCourant;
	}
	
	public EmplacementATrier getEmplacementATrierCourant() {
		return emplacementAtrierCourant;
	}
	
	public void setRepertoiresATrier(List<Repertoire> sousRepertoires) {
		this.repertoiresATrier = sousRepertoires;
	}
	
	public List<Repertoire> getRepertoiresATrier() {
		return repertoiresATrier;
	}
	
	public void setNumeroPage(int numeroPage) {
		this.numeroPage = numeroPage;
	}
	
	public int getNumeroPage() {
		return numeroPage;
	}

	public int getNbColonnes() {
		return nbColonnes;
	}

	public void setNbColonnes(int nbColonnes) {
		this.nbColonnes = nbColonnes;
	}

	public List<PhotoATrierVO> getPhotoVOsAAJouter() {
		return photoVOsAAJouter;
	}

	public void setPhotoVOsAAJouter(List<PhotoATrierVO> photoVOsAAJouter) {
		this.photoVOsAAJouter = photoVOsAAJouter;
	}

	public List<EmplacementTrier> getEmplacementsTrier() {
		return emplacementsTrier;
	}

	public void setEmplacementsTrier(List<EmplacementTrier> repertoireTrier) {
		this.emplacementsTrier = repertoireTrier;
	}

	public List<Lieu> getLieux() {
		return lieux;
	}

	public void setLieux(List<Lieu> lieux) {
		this.lieux = lieux;
	}

	public List<Concerne> getConcernes() {
		return concernes;
	}

	public void setConcernes(List<Concerne> concernes) {
		this.concernes = concernes;
	}

	/**
	 * @deprecated
	 */
	public Repertoire getRepCourantTrier() {
		return repCourantTrier;
	}

	/**
	 * @deprecated
	 */
	public Repertoire getRepertoireCourant() {
		return repCourantTrier;
	}
	
	/**
	 * @deprecated
	 */
	public void setRepCourantTrier(Repertoire repCourantTrier) {
		this.repCourantTrier = repCourantTrier;
	}

	public List<Repertoire> getRepertoiresTrier() {
		return repertoiresTrier;
	}

	public void setRepertoiresTrier(List<Repertoire> repertoiresTrier) {
		this.repertoiresTrier = repertoiresTrier;
	}

	/**
	 * @deprecated
	 */
	public Repertoire getRepCourantAtrier() {
		return repCourantAtrier;
	}

	/**
	 * @deprecated
	 */
	public void setRepCourantAtrier(Repertoire repCourantAtrier) {
		this.repCourantAtrier = repCourantAtrier;
	}

	public EmplacementTrier getEmplacementTrierCourant() {
		return emplacementTrierCourant;
	}

	public void setEmplacementTrierCourant(EmplacementTrier emplacementTrierCourant) {
		this.emplacementTrierCourant = emplacementTrierCourant;
	}

	public String getRepertoireTrierCourantString() {
		return repertoireTrierCourantString;
	}

	public void setRepertoireTrierCourantString(String repertoireTrierCourantString) {
		this.repertoireTrierCourantString = repertoireTrierCourantString;
	}

	/**
	 * @deprecated
	 */
	public Dimension getDimensionVignetteATrier() {
		return dimensionVignetteATrier;
	}

	/**
	 * @deprecated
	 */
	public void setDimensionVignetteATrier(Dimension dimensionVignetteATrier) {
		this.dimensionVignetteATrier = dimensionVignetteATrier;
	}

	public List<Photo> getPhotosAAjouter() {
		return photosAAjouter;
	}

	public void setPhotosAAjouter(List<Photo> photosAAjouter) {
		this.photosAAjouter = photosAAjouter;
	}

	public String getRepertoireATrierCourantString() {
		return repertoireATrierCourantString;
	}

	public void setRepertoireATrierCourantString(
			String repertoireATrierCourantString) {
		this.repertoireATrierCourantString = repertoireATrierCourantString;
	}
	
	public String getPathRepertoireATrierCourant() {
		
		// TODO Faire quelque chose, c'est n'importe quoi!!!
		// Je suis sur que je ne vais rien comprendre la prochaine fois que je vois ce code... ;o)
		
		String path = new String();
		path = emplacementAtrierCourant.getPath();
		
		// Si l'emplacement se termine par un '\'
		if (path.lastIndexOf(File.separator) == path.length()-1) {
			// Si le chemin repertoire commence par '\'
			if (repertoireATrierCourantString.indexOf(File.separator) == 0) {
				path += repertoireATrierCourantString.substring(1);
			} else {
				path += repertoireATrierCourantString;
			}
		} else if (!repertoireATrierCourantString.equals(File.separator)) {
			// Si le chemin repertoire commence par '\'
			if (repertoireATrierCourantString.indexOf(File.separator) == 0) {
				path += repertoireATrierCourantString;
			} else {
				path += File.separator+repertoireATrierCourantString;
			} 
		}
		
		return path;
	}

	public void remonterHierarchieRepertoireATrierCourant() {
		
		// On ne peut pas remonter
		if (repertoireATrierCourantString.equals(File.separator)) {
			return;
		}
		// Ca c'est un truc de ouf! la aussi je ne vais rien comprendre la prochaine fois ;o)
		repertoireATrierCourantString = repertoireATrierCourantString.substring(0, (repertoireATrierCourantString.substring(0, repertoireATrierCourantString.length()-1)).lastIndexOf(File.separator)+1);
	}

	public int getTailleVignetteATrier() {
		return tailleVignetteATrier;
	}

	public void setTailleVignetteATrier(int tailleVignetteATrier) {
		this.tailleVignetteATrier = tailleVignetteATrier;
	}

	public int getTaillePhotoConseillee() {
		return taillePhotoConseillee;
	}

	public void setTaillePhotoConseillee(int taillePhotoConseillee) {
		this.taillePhotoConseillee = taillePhotoConseillee;
	}

	public int getNbPhotosParPage() {
		return nbPhotosParPage;
	}

	public void setNbPhotosParPage(int nbPhotosParPage) {
		this.nbPhotosParPage = nbPhotosParPage;
	}

	public int getTailleEnKoPhotoConseillee() {
		return tailleEnKoPhotoConseillee;
	}

	public void setTailleEnKoPhotoConseillee(int tailleEnKoPhotoConseillee) {
		this.tailleEnKoPhotoConseillee = tailleEnKoPhotoConseillee;
	}
}